package com.tc.service;

import com.tc.domain.Reimbursement_record;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tc.dto.Reimbursement_recordDTO;
import com.tc.dto.Reimbursement_recordQueryDTO;
import com.tc.vo.PageResultVO;
import com.tc.vo.Reimbursement_recordVO;

import java.math.BigDecimal;

/**
 * <p>
 *  报销记录服务类
 * </p>
 *
 * @author jcd
 * @since 2025-07-09
 */
public interface IReimbursement_recordService extends IService<Reimbursement_record> {

    /**
     * 分页查询报销记录
     *
     * @param queryDTO 查询条件
     * @return 分页结果
     */
    PageResultVO<Reimbursement_recordVO> pageQuery(Reimbursement_recordQueryDTO queryDTO);
    
    /**
     * 根据ID获取报销记录详情
     *
     * @param id 报销记录ID
     * @return 报销记录详情
     */
    Reimbursement_recordVO getReimbursementRecordById(Long id);
    
    /**
     * 新增报销记录
     *
     * @param recordDTO 报销记录信息
     * @return 是否成功
     */
    boolean addReimbursementRecord(Reimbursement_recordDTO recordDTO);
    
    /**
     * 修改报销记录
     *
     * @param recordDTO 报销记录信息
     * @return 是否成功
     */
    boolean updateReimbursementRecord(Reimbursement_recordDTO recordDTO);
    
    /**
     * 删除报销记录
     *
     * @param id 报销记录ID
     * @return 是否成功
     */
    boolean deleteReimbursementRecord(Long id);
    
    /**
     * 计算报销金额
     * 
     * @param patientId 患者ID
     * @param totalCost 总费用
     * @return 报销金额
     */
    // 修改方法签名
    Reimbursement_recordVO calculateReimbursementAmount(Long patientId, BigDecimal totalCost);
}
